package dltec.demo;

import java.util.Arrays;
import java.util.Random;

public class demo07 {
    public static void main(String[] args) {
    	
        //创建随机数
        Random random = new Random();
        //产生5个不重复的随机数 放到数组中
        int[] arr = new int[5];
        //先判断该数组中是否包含这个元素再放进去
        //先定义一个下标，统计存放的数据
        int index = 0;
        //看看循环了多少次
        int count = 0;
        //数组存放了就结束循环 因为不知道要循环多少次 所以用while循环
        while(index < arr.length){
            int num = random.nextInt(5)+1;
            //若是已经存在 这返回false 不存入该数组  若不存在 这返回true 存入该数组
            if (check(arr,num)){
                //若数组中没有该数据，这存入数组中，且下标自增 先运算在自增 ++在后
                arr[index++] = num;
            }
            count++;
            //返回true说明已经存在了 ！转义变为false
           /*if (!contains(arr,num)){
                //若数组中没有该数据，这存入数组中，且下标自增 先运算在自增 ++在后
                arr[index++] = num;
            }*/
        }
        System.out.println(Arrays.toString(arr) + "循环的次数：" + count);
    }
    //写一个方法判断这数据是否已经存在该数组汇总
    //若是已经存在 这返回false 不存入该数组  若不存在 这返回true 存入该数组
    public static boolean check(int[] arr,int num){
        //判断num是否已在数组arr中
        for (int i = 0; i < arr.length ; i++) {
            if (num == arr[i]){
                return false;
            }
        }
        return true;
    }
    //采用升序 ，二分法查找。
    /* 有bug 每次进行排序时 因为index的自增 每次存入一个数据，排序就会少排一位。
        public static boolean contains(int[] arr,int num){
        //对数组进行升序
        Arrays.sort(arr);
        //进行二分法查找
        //二分法查找中，没找到返回-1 找到了返回索引 所以 >=0 代表找到了
       return Arrays.binarySearch(arr,num) >= 0;

    }*/


}
